"""
    创建图形管理器
        -- 记录多种图形（圆形，矩形）
        -- 提供计算总面积的方法
        要求：增加新图形，不影响图形管理器.
    测试：
        创建图形管理器，存储多个图形对象
        通过图形管理器，调用计算总面积方法
"""

class DrawingManager:

    def __init__(self):
        self.__drawing_list = []

    def add_drawing_list(self,new):
        self.__drawing_list.append(new)

    def calculate_drawing_area(self):
        total_area = 0
        for item in self.__drawing_list:
            total_area += item.calculate_area()
        return total_area

class Drawing:

    def calculate_area(self):
        pass

class Circular(Drawing):

    def __init__(self,r=0):
        self.r = r

    def calculate_area(self):
        return 3.14 * self.r * self.r

class Rectangle(Drawing):

    def __init__(self,w,h):
        self.w = w
        self.h = h

    def calculate_area(self):
        return self.w * self.h


dm = DrawingManager()
c1 = Circular(2)
c2 = Circular(5)
c3 = Circular(1)

r1 = Rectangle(10,20)
r2 = Rectangle(5,10)
r3 = Rectangle(6,12)

dm.add_drawing_list(c1)
dm.add_drawing_list(c2)
dm.add_drawing_list(c3)
dm.add_drawing_list(r1)
dm.add_drawing_list(r2)
dm.add_drawing_list(r3)

print(dm.calculate_drawing_area())